--modul bloku glownego projektu, laczy odpowiednie wejscia z wyjsciami blokow

library ieee;
use ieee.std_logic_1164.all; 
use ieee.std_logic_arith.all; 

entity fpga is
	port (		clkx : in std_ulogic;	--bit zegara
   	   klawdane, klawzeg : in std_logic;	--bit danych z klawiatury i bit zegara od klawiatury
		      txdmmm : out std_ulogic;	--bit danych przekazywanych na wyjscie szeregowe
			u2_d : out std_ulogic_vector ( 7 downto 0);	--ostatnio wprowadzona liczba wyswietlana na diodach led ukladu
			l2_d : out std_ulogic_vector ( 7 downto 0)	--znacznik przepelnienia mnozenia wyswietlany na diodzie led
	);
end entity fpga;

architecture fpgaarch of fpga is 
	
	component blkwejs is	--komponent okreslajacy sygnaly modulu wejsciowego
 		port (czytaj, kldane, klzeg, ck : in std_ulogic;	
 				 	     wy : out std_ulogic_vector (7 downto 0);
 					 gotowe : out std_ulogic
		);
 	end component blkwejs;

	component blkwysc is	--komponent okreslajacy sygnaly modulu wyjsciowego
		port (start, ck : in std_ulogic;
 			     we : in std_ulogic_vector (7 downto 0);
 		    gotowe, txd : out std_ulogic
		);
 	end component blkwysc;
	
	component boz is	--komponent okreslajacy sygnaly modulu zarzadzajacego 
		port (		clk : in std_ulogic;
		       we_ok, wy_ok : in std_ulogic; 
		       we_go, wy_go : out std_ulogic;
			       we_d : in std_ulogic_vector ( 7 downto 0);
			       wy_d : out std_ulogic_vector ( 7 downto 0);
			       u2_d : out std_ulogic_vector ( 7 downto 0); --ostatnio wprowadzona liczba wyswietlana na diodach led ukladu
			       l2_d : out std_ulogic --znacznik przepelnienia mnozenia wyswietlany na diodzie led
		);
	end component boz;
	
	signal we_go, wy_go : std_ulogic;	--sygnaly startu podawane na blok wejsciowy, wyjsciowy i zarzadzania
	signal we_ok, wy_ok : std_ulogic;	--sygnaly gotowosci podawane na blok wejsciowy, wyjsciowy i zarzadzania
	signal  we_d,  wy_d : std_ulogic_vector ( 7 downto 0);	--sygnaly danych z bloku wejsciowego, przekazywane na blok wyjsciowy
	signal  	xxx : std_ulogic_vector ( 7 downto 0);	--ostatnio wprowadzona liczba wyswietlana na diodach led ukladu
		
	begin
		f0: blkwejs port map (we_go, klawdane, klawzeg, clkx, we_d, we_ok);
 		f1: blkwysc port map (wy_go, clkx, wy_d, wy_ok, txdmmm);
 		f2: boz port map (clkx, we_ok, wy_ok, we_go, wy_go, we_d, wy_d,	xxx, l2_d(0));
			
		u2_d <= xxx;	--wyswietlenie ostatnio wprowadzonej liczby na diodach led
		l2_d( 7 downto 1) <= "1111111";	--wygaszenie wszystkich diod poza dioda okreslajaca przepelnienie

end architecture fpgaarch; 
